package cn.patient.pp.module.fiveInOne.controller.admin.vo;

import cn.patient.pp.framework.desensitize.core.slider.annotation.IdCardDesensitize;
import cn.patient.pp.framework.desensitize.core.slider.annotation.MobileDesensitize;
import cn.patient.pp.framework.mybatis.core.dataobject.BaseDO;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.Accessors;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false，避免用户导入有问题
public class KeyPersonProtectionImportExcelVO extends BaseDO {

    @Schema(description = "管理机构id", example = "8972")
    @ExcelIgnore
    private Long deptId;

    @Schema(description = "网格编号", example = "411728000000")
    @ExcelProperty("网格编号")
    private String gridCode;

    @Schema(description = "网格名称", example = "遂平县")
    @ExcelProperty("网格名称")
    private String gridName;

    @Schema(description = "姓名", example = "张三")
    @ExcelProperty("姓名")
    private String patientName;

    @Schema(description = "证件号码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("证件号码")
    @IdCardDesensitize
    private String idNumber;

    @Schema(description = "出生日期")
    @ExcelIgnore
    private LocalDate birthDate;

    @Schema(description = "性别")
    @ExcelProperty("性别")
    private String gender;

    @Schema(description = "联系方式")
    @ExcelProperty("联系方式")
    private String phone;

    @Schema(description = "评定的风险等级")
    @ExcelProperty("评定的风险等级")
    private String riskAssessment;

    @Schema(description = "现住地门（楼）详址")
    @ExcelProperty("现住地门（楼）详址")
    private String currentAddress;

    @Schema(description = "监护人姓名")
    @ExcelProperty("监护人姓名")
    private String guardian;

    @Schema(description = "与监护人关系")
    @ExcelProperty("与监护人关系")
    private String guardianPatientRelationship;

    @Schema(description = "监护人联系方式")
    @ExcelProperty("监护人联系方式")
    private String contact;

    @Schema(description = "包保乡干部姓名", example = "张三")
    @ExcelProperty("包保乡干部姓名")
    private String townCadreName;

    @Schema(description = "包保乡干部联系方式")
    @ExcelProperty("包保乡干部联系方式")
    private String townCadrePhone;

    @Schema(description = "包保村干部姓名", example = "赵六")
    @ExcelProperty("包保村干部姓名")
    private String villageCadreName;

    @Schema(description = "包保村干部联系方式")
    @ExcelProperty("包保村干部联系方式")
    private String villageCadrePhone;

    @Schema(description = "精防医生姓名", example = "芋艿")
    @ExcelProperty("精防医生姓名")
    private String doctorName;

    @Schema(description = "精防医生联系方式")
    @ExcelProperty("精防医生联系方式")
    private String doctorPhone;

    @Schema(description = "包保民警姓名", example = "李四")
    @ExcelProperty("包保民警姓名")
    private String policeName;

    @Schema(description = "包保民警联系方式")
    @ExcelProperty("包保民警联系方式")
    private String policePhone;

    @Schema(description = "备注（2025年新评定录入人员请标注“2025”）", example = "你说的对")
    @ExcelProperty("备注（是否为2025年评定录入人员）")
    private String remark;

}